package com.zillion.employee.service;

import com.zillion.employee.domain.PersonApply;
import com.zillion.health.domain.HealthPersonInfo;
import com.zillion.health.domain.vo.UISelectDataVo;

import java.util.List;

/**
 * 个人申报管理 服务层
 *
 * @author zillion
 */
public interface IPersonApplyService {

    /**
     * 新增人员信息
     *
     * @param healthPersonInfo 人员信息
     * @return 结果
     */
    public int insertHealthPersonApply(HealthPersonInfo healthPersonInfo);
    
    /**
     * 查询个人申报管理数据
     *
     * @param personApply 个人申报信息
     * @return 个人申报信息集合
     */
    public List<PersonApply> selectPersonApplyList(PersonApply personApply);


    /**
     * 根据个人申报ID查询信息
     *
     * @param personApplyId 个人申报ID
     * @return 个人申报信息
     */
    public PersonApply selectPersonApplyById(Long personApplyId);

    /**
     * 根据ID查询所有子个人申报（正常状态）
     *
     * @param personApplyId 个人申报ID
     * @return 子个人申报数
     */
    public int selectNormalChildrenPersonApplyById(Long personApplyId);

    /**
     * 是否存在个人申报子节点
     *
     * @param personApplyId 个人申报ID
     * @return 结果
     */
    public boolean hasChildByPersonApplyId(Long personApplyId);

    /**
     * 查询个人申报是否存在用户
     *
     * @param personApplyId 个人申报ID
     * @return 结果 true 存在 false 不存在
     */
    public boolean checkPersonApplyExistUser(Long personApplyId);

    /**
     * 校验个人申报名称是否唯一
     *
     * @param personApply 个人申报信息
     * @return 结果
     */
    public boolean checkPersonApplyNameUnique(PersonApply personApply);

    /**
     * 修改保存个人申报信息
     *
     * @param personApply 个人申报信息
     * @return 结果
     */
    public int updatePersonApply(PersonApply personApply);

    /**
     * 删除个人申报管理信息
     *
     * @param personApplyId 个人申报ID
     * @return 结果
     */
    public int deletePersonApplyById(Long personApplyId);

    /**
     * 查询民族列表
     * @return  民族列表
     */
    List<UISelectDataVo> listEthnic();

    /**
     *  查询园区列表
     * @return 园区列表
     */
    List<UISelectDataVo> listParkId();

    /**
     * 查询工种列表
     * @return 工种列表
     */
    List<UISelectDataVo> listJobTypes();
}
